home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / libraries / pchglib14.lha / MakeVPort_Patch374.lha / makevport_patch.asm next >
Encoding:
Assembly Source File  |  1994-10-11  |  1.9 KB  |  77 lines

  1.  
  2. ABSEXECBASE        EQU    $4
  3. _LVOAllocMem        EQU    -198
  4. _LVOCloseLibrary    EQU    -414
  5. _LVOSetFunction        EQU    -420
  6. _LVOOpenLibrary        EQU    -552
  7. _LVOCopyMemQuick    EQU    -630
  8. _LVOMakeVPort        EQU    -216
  9.  
  10.     SECTION S_0,CODE
  11.  
  12. SECSTRT_0:
  13.     MOVEM    a6/d2/d3,-(a7)            ; Save Registers
  14.     LEA    (LibName,PC),A1            ; Name of Graphics.library
  15.     MOVEQ    #39,D0                ; Version 39+
  16.     MOVEA.L    (ABSEXECBASE).W,A6        ; Put Execbase in A6
  17.     JSR    (_LVOOpenLibrary,A6)        ; Open Library
  18.     TST.L    D0                ; Ptr to lib
  19.     BEQ.S    V37                ; If V39 do V37 check
  20.     MOVEA.L    D0,A1
  21.     JSR    (_LVOCloseLibrary,A6)        ; Else it's V39, close & xit
  22.     BRA.S     Exit
  23. V37:
  24.     LEA    (LibName,PC),A1            ; Here we go again...
  25.     MOVEQ    #37,D0                ; Try for V37
  26.     JSR    (_LVOOpenLibrary,A6)        ; Open Library
  27.     TST.L    D0                ; Ptr to lib
  28.     BEQ.S    Exit                ; if !=37 exit
  29.  
  30.     MOVE.L    D0,D2                ; Lib ptr to D2 for later
  31.  
  32.     MOVEQ    #Efunct-Sfunct,D0        ; Size of Allocation
  33.     MOVEQ    #1,D1                ; Any Ram
  34.     JSR    (_LVOAllocMem,A6)        ; Allocate Ram
  35.     MOVE.L    D0,D3                ; Store ptr to new ram in D3
  36.     BEQ.S    Exit                ; And if null ptr,exit
  37.     MOVEA.L    D0,A1                ; Set pointer as destination
  38.     LEA    Sfunct,A0            ; Set Source
  39.     MOVEQ    #Efunct-Sfunct,D0        ; Set Size
  40.     JSR    (_LVOCopyMemQuick,A6)        ; Copymem
  41.     
  42.     MOVEA.L    D2,A1                ; Get Lib ptr for gfx.lib
  43.  
  44.     MOVEA    #_LVOMakeVPort,A0        ; MakeVport offset
  45.     MOVE.L    D3,D0                ; Retrieve New Fctn Pointer
  46.     JSR    (_LVOSetFunction,A6)        ; SetFunction
  47.     MOVEA.L    D3,A0                ; Get address of new fctn
  48.     MOVE.L    D0,(oldfctn-Sfunct,A0)        ; Give it pointer to old fctn
  49.     JSR    (_LVOCloseLibrary,A6)        ; Close library
  50. Exit:
  51.     MOVEQ    #0,D0
  52.     MOVEM    (a7)+,a6/d2/d3            ; Restore registers
  53.     RTS
  54.  
  55. LibName:
  56.     DC.B "graphics.library",00
  57.     DC.B "$VER: MakeVport_Patch 37.4 (20.10.94)",00,00
  58. Sfunct:
  59.     MOVE.L    A2,-(A7)
  60.     BTST    #2,(33,A1)
  61.     BEQ.S    LAB_0003
  62.     TST.L    (20,A1)
  63.     BEQ.S    LAB_0003
  64.     BTST    #0,(31,A1)
  65.     BEQ.S    LAB_0003
  66.     SUBQ    #1,(30,A1)
  67. LAB_0003:
  68.     MOVEA.L    oldfctn,A2
  69.     JSR    (A2)
  70.     MOVEA.L    (A7)+,A2
  71.     RTS
  72. oldfctn:
  73.     DC.L    $FFFFFFFF        ; Rubbish Padding...
  74. Efunct:                   
  75.     END
  76.  
  77.